package com.atguigu.gmall.pms.feign;

import com.atguigu.core.bean.QueryCondition;
import com.atguigu.core.bean.Resp;
import com.atguigu.gmall.pms.entity.*;
import com.atguigu.gmall.pms.vo.BaseGroupVO;
import org.springframework.web.bind.annotation.*;

import java.util.List;

public interface GmallPmsApi {
    @GetMapping("pms/brand/info/{brandId}")
    Resp<BrandEntity> info(@PathVariable("brandId") Long brandId);

    @GetMapping("pms/category/info/{catId}")
    Resp<CategoryEntity> catInfo(@PathVariable("catId") Long catId);

    @GetMapping("pms/productattrvalue/{spuId}")
    Resp<List<ProductAttrValueEntity>> querySearchAttrValue(@PathVariable("spuId") Long spuId);

    @GetMapping("pms/skuinfo/{spuId}")
    Resp<List<SkuInfoEntity>> querySkuBySpuId(@PathVariable("spuId") Long spuId);

    @PostMapping("pms/spuinfo/{status}")
    Resp<List<SpuInfoEntity>> querySpuInfoByStatus(@RequestBody QueryCondition condition,
        @PathVariable("status") Integer status);

    @GetMapping("pms/category")
    Resp<List<CategoryEntity>> queryCategory(@RequestParam(value = "level", defaultValue = "0") Integer level,
        @RequestParam(value = "parentCid", required = false) Long parentCid);

    @GetMapping("pms/category/{pid}")
    Resp<List<CategoryEntity>> querySubCategory(@PathVariable("pid")Long pid);

    // 根据id查询sku，对应SkuInfoController的info方法
    @GetMapping("pms/skuinfo/info/{skuId}")
     Resp<SkuInfoEntity> querySkuById(@PathVariable("skuId") Long skuId);
    // 根据skuId查询sku的图片
    @GetMapping("pms/skuimages/{skuId}")
     Resp<List<SkuImagesEntity>> queryImagesBySkuId(@PathVariable("skuId") Long skuId);
    // 根据spuId查询所有的销售属性
    @GetMapping("pms/skusaleattrvalue/{spuId}")
     Resp<List<SkuSaleAttrValueEntity>> querySkuSaleAttrValueBySpuId(@PathVariable("spuId")Long spuId);
    //根据spuId查询spu商品描述
    @GetMapping("pms/spuinfodesc/info/{spuId}")
    Resp<SpuInfoDescEntity> querySpuInfoDescById(@PathVariable("spuId") Long spuId);


   //获取规格参数组及组下的规格参数和值
    @GetMapping("pms/attrgroup/item/group/{cid}/{spuId}")
    Resp<List<BaseGroupVO>> queryItemGroupVoByCidAndSpuId(@PathVariable("cid") Long cid, @PathVariable("spuId") Long spuId);

}
